home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / rfc / rfcxxxx / rfc1714 < prev    next >
Text File  |  1995-07-25  |  85KB  |  2,580 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                      S. Williamson
  8. Request for Comments: 1714                                    M. Kosters
  9. Category: Informational                           Network Solutions Inc.
  10.                                                                 InterNIC
  11.                                                            November 1994
  12.  
  13.  
  14.                     Referral Whois Protocol (RWhois)
  15.  
  16. Status of this Memo
  17.  
  18.    This memo provides information for the Internet community.  This memo
  19.    does not specify an Internet standard of any kind.  Distribution of
  20.    this memo is unlimited.
  21.  
  22. Abstract
  23.  
  24.    This memo describes version 1.0 of the client/server interaction of
  25.    RWhois.  RWhois provides a distributed system for the display of
  26.    hierarchical information.  This system is hierarchical by design,
  27.    allowing for the reduction of a query, and the referral of the user
  28.    closer to the maintainer of the information.
  29.  
  30. Table of Contents
  31.  
  32.      1.   Introduction................................... 3
  33.      2.   RWhois Client Model............................ 5
  34.        2.1  Directives:  Client to Server Interaction ... 6
  35.        2.2  Required Directives ......................... 6
  36.           2.2.1 <query>.................................. 6
  37.           2.2.2 RWhois................................... 7
  38.        2.3  Optional Directives ......................... 7
  39.           2.3.1 load..................................... 7
  40.           2.3.2 limit.................................... 7
  41.           2.3.3 schema................................... 8
  42.           2.3.4 xfer..................................... 8
  43.           2.3.5 quit..................................... 9
  44.           2.3.6 status................................... 9
  45.           2.3.7 cache.................................... 9
  46.           2.3.8 holdconnect..............................10
  47.           2.3.9 forward..................................10
  48.           2.3.10 soa.....................................11
  49.           2.3.11 notify..................................11
  50.           2.3.12 register................................13
  51.           2.3.13 object..................................14
  52.           2.3.14 define..................................15
  53.           2.3.15 private.................................15
  54.           2.3.16 X-......................................16
  55.  
  56.  
  57.  
  58. Williamson & Kosters                                            [Page 1]
  59.  
  60. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  61.  
  62.  
  63.           2.3.17 directive...............................17
  64.           2.3.18 display.................................17
  65.           2.3.19 language................................18
  66.        2.4  RWhois Client Model .........................18
  67.      3.   RWhois Server Model............................20
  68.        3.1  Output Display and Restriction Keywords .....20
  69.        3.2  Responses:  Server to Client Interaction ....21
  70.        3.3  Required Responses ..........................22
  71.           3.3.1 RWhois...................................22
  72.           3.3.2 referral.................................22
  73.           3.3.3 ok.......................................24
  74.           3.3.4 error....................................24
  75.        3.4  Optional Responses ..........................25
  76.           3.4.1 see-also.................................25
  77.           3.4.2 load.....................................26
  78.           3.4.3 soa......................................26
  79.           3.4.4 status...................................28
  80.           3.4.5 xfer.....................................29
  81.           3.4.6 schema...................................30
  82.           3.4.7 define...................................32
  83.           3.4.8 object...................................32
  84.           3.4.9 directive................................33
  85.           3.4.10 info....................................34
  86.           3.4.11 display.................................34
  87.           3.4.12 X-......................................35
  88.           3.4.13 language................................35
  89.        3.5  Query Reduction .............................36
  90.        3.6  Determining Authority .......................36
  91.        3.7  Secondary Server Interaction ................37
  92.        3.8  Registration Process ........................38
  93.        3.9  Out-of-Service ..............................38
  94.      4.   Interaction:  Client Directives and Acceptable
  95.           Server Responses...............................39
  96.        4.1 General ......................................39
  97.        4.2 On Connection ................................39
  98.        4.3 <QUERY> ......................................39
  99.        4.4 -RWhois ......................................40
  100.        4.5 -load ........................................40
  101.        4.6 -limit<SP>< value > ..........................40
  102.        4.7 -schema<SP>[object] ..........................40
  103.        4.8 -xfer<SP>[object] ............................40
  104.        4.9 -quit ........................................40
  105.        4.10 -cache<SP><on/off> ..........................40
  106.        4.11 -status .....................................40
  107.        4.12 -forward ....................................40
  108.        4.13 -soa ........................................40
  109.        4.14 -notify .....................................41
  110.        4.15 -register ...................................41
  111.  
  112.  
  113.  
  114. Williamson & Kosters                                            [Page 2]
  115.  
  116. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  117.  
  118.  
  119.        4.16 -holdconnect ................................41
  120.        4.17 -object .....................................41
  121.        4.18 -define .....................................41
  122.        4.19 -X- .........................................41
  123.        4.20 -display ....................................41
  124.        4.21 -language ...................................41
  125.      5.   Error Codes....................................42
  126.        5.1  Error Code List .............................42
  127.      6.   Attribute Format...............................43
  128.        6.1  Format Specification Macros .................44
  129.      7.   Quick Query (RWhois using UDP).................45
  130.      8.   References.....................................46
  131.      9.   Security Considerations....................... 46
  132.      10.  Authors' Addresses.............................46
  133.  
  134. 1.  Introduction
  135.  
  136.    Early in ARPANET development, the SRI-NIC established a centralized
  137.    whois database that provided host and network information about the
  138.    systems connected to the network and the E-mail addresses of the
  139.    users on those systems.  The ARPANET experiment has evolved into a
  140.    global network with countless people and hundreds of thousands of end
  141.    systems.  Given the sheer size and effort needed to maintain a
  142.    centralized database, an alternate, decentralized approach to store
  143.    and display this information is desired.
  144.  
  145.    The Internet portions of the DDN NIC have been transitioned to what
  146.    is now known as InterNIC Registration Services (RS).  The charter for
  147.    InterNIC RS has been reduced to maintain information only for IP
  148.    networks, top-level domains, Autonomous System Numbers, and the
  149.    points of contact for each of these particular entities.  In
  150.    addition, the InterNIC, in its role as an Internet Registry (IR), has
  151.    delegated IP block assignment authority to Regional Registries such
  152.    as the RIPE NCC for Europe and the APNIC for the Asian Pacific
  153.    region, while retaining authority for North America and all non-
  154.    delegated regions.  This has led to a fragmentation of whois service
  155.    to the Internet user.
  156.  
  157.    Several different solutions have been proposed and developed by the
  158.    various regional IR's.  Two solutions have been worked on
  159.    extensively:  the Shared Whois Project (SWIP) and X.500.
  160.  
  161.    The SWIP project has a common exchange format that can be parsed by
  162.    the various IR's for input and output.  Thus, one can synchronize
  163.    their databases with information obtained from the other IR's.  This
  164.    project is showing promise and is now operational.  However, this
  165.    approach still requires a centralized database for store and display.
  166.  
  167.  
  168.  
  169.  
  170. Williamson & Kosters                                            [Page 3]
  171.  
  172. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  173.  
  174.  
  175.    The InterNIC has also been involved in the use of X.500 for display
  176.    of registration information.  Among other things, this included
  177.    defining schemas and Directory information tree structures for the
  178.    purpose of distributing information amongst the various IR X.500
  179.    Directory Service Agents (DSA).  Unfortunately, X.500's complexity,
  180.    resource utilization, and lack of Internet support has made a search
  181.    for an alternative solution necessary.
  182.  
  183.    The information that the various IR's maintain is inherently
  184.    hierarchical in nature.  (Examples: hammer.nic.ddn.mil is under the
  185.    nic.ddn.mil domain which is under the ddn.mil domain which is under
  186.    the .mil domain. 198.41.0.21 is part of network 198.41.0.0/24 which
  187.    is part of the block 198.41.0.0/16 which is part of the block
  188.    198.0.0.0/8)  The InterNIC may not have the information, but will at
  189.    least be able to reduce the query and point or refer the users closer
  190.    to their goal.  This has led to the development of a referral whois,
  191.    and the corresponding RWhois protocol.
  192.  
  193.    The underlying premise for this project has been to retain the basic
  194.    functionality of the whois server and client, making all of the
  195.    extensions optional.  The server must respond to the original whois
  196.    client, currently included with many operating systems.  The RWhois
  197.    client must also interact with RFC 954 [RFC-954] whois servers.
  198.  
  199.    RWhois has been designed as an extensible protocol to ensure that
  200.    many uses can be accommodated.  Public extensions to the protocol
  201.    should be documented as RFCs.  Private extensions can be used with
  202.    agreement left up to the client and server.
  203.  
  204.    If extensions are not implemented at the server in question, an
  205.    appropriate error message must be sent.  The use of extended error
  206.    message is outlined in Section 5 - Error Codes.
  207.  
  208.    Throughout this document the following notations will be used to
  209.    describe the RWhois server/client interaction:
  210.  
  211.      <SP>      space
  212.      [arg]     optional argument
  213.      <arg>     required argument
  214.      (<arg>)   conditional required argument
  215.      ([arg])   conditional optional argument
  216.      {format}  format of item
  217.      \         continued on next line
  218.  
  219.    The words should and must are significant in this document.  If
  220.    should is used, the implementor has the option to follow the advice
  221.    of this document.  If must is used then it is a required part of the
  222.    protocol.  Implementations without this functionality may not
  223.  
  224.  
  225.  
  226. Williamson & Kosters                                            [Page 4]
  227.  
  228. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  229.  
  230.  
  231.    interact correctly with other RWhois servers.
  232.  
  233.    The format descriptions throughout this document use macro
  234.    definitions described in Section 6.1.  Refer to that section for
  235.    clarification.
  236.  
  237.    The RWhois protocol specified in this document can be extended to
  238.    accommodate such applications as NetHelp and ZoneGen (DNS zone
  239.    generator).
  240.  
  241. 2.  RWhois Client Model
  242.  
  243.    The RWhois design requires compatibility with the current Whois and
  244.    Whois++ servers.  Therefore, the RWhois client must wait or have
  245.    knowledge of server type to determine if the server contacted is an
  246.    RWhois server.  The user should have control over the time the client
  247.    waits, since this will vary based on network congestion and capacity.
  248.    If after the wait the server does not respond with the %RWhois
  249.    response, the client must not send any RWhois extended directives.
  250.  
  251.    In this case, the client should only send the query.  We realize that
  252.    the server identification feature may mean that the identity of an
  253.    RWhois server may be missed.  However, it will allow the RWhois
  254.    system to utilize the current Whois and Whois++ infrastructure.
  255.    Referrals from RWhois can be directed toward a Whois or Whois++
  256.    server.  These non-RWhois servers must be placed as a leaf on the
  257.    hierarchical tree.  These servers represent a mesh structure from the
  258.    RWhois perspective.  This restriction should not discourage the use
  259.    of these servers in building the RWhois structure.
  260.  
  261.    The RWhois server must remain connected until a query is received.
  262.    If the client wishes to make multiple queries it must send the
  263.    -holdconnect directive.  In this mode, once the client has sent the
  264.    last query and received either an answer or the error code indicating
  265.    that no records were found, it must issue the -quit directive.  If
  266.    the client only wishes to issue directives, then upon completion the
  267.    -quit directive must be sent.  If it is not sent, the server will
  268.    wait until it receives non-directive input from the client.
  269.  
  270.    Considering the requirement for compatibility with the original
  271.    whois, the RWhois client in default mode must operate exactly like
  272.    the current Whois client.  However, in the enhanced mode, the RWhois
  273.    client can do much more based on information received from the RWhois
  274.    server.
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Williamson & Kosters                                            [Page 5]
  283.  
  284. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  285.  
  286.  
  287. 2.1  Directives:  Client to Server Interaction
  288.  
  289.    The RWhois client sends directives to the RWhois server. These
  290.    directives are prefaced with the `-' character always at the start of
  291.    a new line.  However, for compatibility with older Whois clients, the
  292.    query is not prefaced with the `-' character. Only after the client
  293.    is certain that the server is an RWhois server should these
  294.    directives be sent.  Compatibility with RFC 954 [RFC-954] whois
  295.    servers is required.  All directives must be terminated by <LF><CR>.
  296.  
  297. 2.2  Required Directives
  298.  
  299.    The following are required RWhois client directives.
  300.  
  301. 2.2.1 <query>
  302.  
  303.    The query is generally the final directive sent to the server.  It is
  304.    the only directive that does not start with a `-'.  The query is the
  305.    question that the client wants the server to answer.  The qualifiers
  306.    that may proceed the query are addressed in Section 3.1 - Output
  307.    Display and Restriction Keywords.
  308.  
  309.    Format for use:
  310.  
  311.    [display format]<SP>[query restriction]<SP><query>
  312.  
  313.    [Display format]{%s}     This optional pre-query directive allows
  314.                             the requester to select the format of
  315.                             the returned data.  Details of the
  316.                             allowable values can be found in Section
  317.                             3.1.
  318.  
  319.    [Query restriction]{%s}  This optional pre-query directive allows
  320.                             the requester to limit the area in which
  321.                             the servers search for a specific
  322.                             object.
  323.  
  324.    Example of use:
  325.  
  326.    dump domain netsol.com
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Williamson & Kosters                                            [Page 6]
  339.  
  340. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  341.  
  342.  
  343. 2.2.2 RWhois
  344.  
  345.    The -RWhois directive identifies the client as an RWhois client
  346.    allowing the server to operate using the RWhois protocol exclusively.
  347.  
  348.    Format for use:
  349.  
  350.    -RWhois<SP>V-<spec version #><SP>[imp identifier]
  351.  
  352.    <Spec version #>{%2d.%2d}     This required argument identifies
  353.                                  the specification version that the
  354.                                  client is built to conform with.
  355.                                  Clients that are built in
  356.                                  accordance with this document are
  357.                                  V-1.0.  This argument will be used
  358.                                  by the server to determine if
  359.                                  features introduced in subsequent
  360.                                  releases of the protocol document
  361.                                  may be used.
  362.  
  363.    [Imp identifier]{%s}  This optional argument identifies client
  364.                          implementation information.  It is
  365.                          recommended that the implementor maintain a
  366.                          version number separate from the
  367.                          specification version.
  368.  
  369.    Example of use:
  370.  
  371.    -RWhois V-1.0 [InterNIC B.0.9.7]
  372.  
  373. 2.3  Optional Directives
  374.  
  375.    The following are OPTIONAL RWhois server directives.
  376.  
  377. 2.3.1 load
  378.  
  379.    The -load directive allows the client to make a quick decision about
  380.    presenting the query to the current server.  If the client determines
  381.    that another server can better serve the query, then control may be
  382.    transferred to the server with the lower load and better connection.
  383.    This directive has no arguments.
  384.  
  385. 2.3.2 limit
  386.  
  387.    The -limit directive will allow the client to request the server
  388.    allocate enough space to collect more responses than would currently
  389.    be collected by the server.
  390.  
  391.  
  392.  
  393.  
  394. Williamson & Kosters                                            [Page 7]
  395.  
  396. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  397.  
  398.  
  399.    Format for use:
  400.  
  401.    -limit<SP><value>
  402.  
  403.    <Value>{%d}  This required argument is the new limit requested by
  404.                 the client.  If the limit exceeds the limit set by
  405.                 the server administrator, the client must receive an
  406.                 error message.  It is recommended that if the client
  407.                 receives an error for exceeding the servers upper
  408.                 limit, it should cut the request in half and resend
  409.                 the request until an acceptable level has been
  410.                 negotiated.
  411.  
  412.    Example of use:
  413.  
  414.    -limit 2000
  415.  
  416. 2.3.3 schema
  417.  
  418.    One of the shortcomings of X.500 was the requirement to know the
  419.    schema of an object before making a query.  RWhois allows the client
  420.    to request the schema for an object without knowledge of the object
  421.    by using the -schema directive.
  422.  
  423.    Format for use:
  424.  
  425.    -schema<SP>[object]
  426.  
  427.    [object]{%s}   This optional argument identifies the objects for
  428.                   which the schema is being requested.  If this
  429.                   argument is not sent, the schemas for all objects
  430.                   contained in the server will be sent.
  431.  
  432.    Example of use:
  433.  
  434.    -schema domain
  435.  
  436. 2.3.4 xfer
  437.  
  438.    The -xfer directive is used to transfer all data from a server.  This
  439.    method of transfer has no limit on the number of records that can be
  440.    transferred to the client application.  This directive is primarily
  441.    used to transfer data contained in an authority area for caching at a
  442.    secondary server.
  443.  
  444.    Format for use:
  445.  
  446.    -xfer<SP>[object]<SP>[authority area]<SP>[SOA]
  447.  
  448.  
  449.  
  450. Williamson & Kosters                                            [Page 8]
  451.  
  452. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  453.  
  454.  
  455.    [Object]{All|%s}       This required argument identifies the
  456.                           object to transfer.  If the keyword all
  457.                           is sent, all objects contained in the
  458.                           server will be transferred.  Otherwise,
  459.                           only the object specified will be sent.
  460.  
  461.    [Authority area]{%s}   This optional argument contains the
  462.                           authority area of the object to send
  463.                           further limiting the data transfer.
  464.  
  465.    [SOA]{%d}              This optional argument notifies the server
  466.                           to send everything that has been updated
  467.                           since this SOA number.
  468.  
  469.    Example of use:
  470.  
  471.    -xfer domain netsol.com
  472.    -xfer domain netsol.com 19940818141259
  473.  
  474. 2.3.5 quit
  475.  
  476.    The -quit directive will inform the server that the client is
  477.    finished.  The server and client should close the connection.  This
  478.    directive has no arguments.
  479.  
  480. 2.3.6 status
  481.  
  482.    The -status directive is used to poll the server for its status.
  483.    There are seven required responses to this directive.  Additional
  484.    attributes may be sent in the response.  The client should ignore all
  485.    unknown attributes.  This directive has no arguments.
  486.  
  487. 2.3.7 cache
  488.  
  489.    The RWhois server can hold data that it has no authority over.  If
  490.    the server sends this data to a requester, it is considered a non-
  491.    authoritative response.  The holding of this data is called caching.
  492.    The physical data for these objects is not contained on the system
  493.    hosting the server.  The -cache directive allows the client to
  494.    instruct the server whether or not to send cached data.  The RWhois
  495.    client should start with the cache turned off.  The server must start
  496.    with the cache turned on in order to function like the RFC 954 [RFC-
  497.    954] whois server.  Because of the server's default, the client
  498.    should send the -cache off directive during initial session setup if
  499.    cached data should not be sent.  Details on expiration of cache data
  500.    can be found in section 3.4.3, %soa response.
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Williamson & Kosters                                            [Page 9]
  507.  
  508. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  509.  
  510.  
  511.    Format for use:
  512.  
  513.    -cache<SP><mode>
  514.  
  515.    <mode>{on|off}
  516.    on:  Turns caching on.
  517.    off: Turns caching off.
  518.  
  519.    Example of use:
  520.    -cache on
  521.  
  522. 2.3.8 holdconnect
  523.  
  524.    The RWhois server must close the connection after the response to a
  525.    query has been received.  The query is the final exchange between the
  526.    client and server. However, this characteristic can be modified with
  527.    the -holdconnect directive.  If this directive is issued to the
  528.    RWhois sever, it will remain connected until the -quit directive is
  529.    received.  Once the -quit directive is received, both the server and
  530.    the client must close their connection.
  531.  
  532.    Format for use:
  533.  
  534.    -holdconnect<SP><mode>
  535.  
  536.    <mode>{on|off}
  537.    On:  Turns holdconnect on.
  538.    Off: Turns holdconnect off.
  539.  
  540.    Example of use:
  541.  
  542.    -holdconnect on
  543.  
  544. 2.3.9 forward
  545.  
  546.    During normal sever operation the server will send %referral or
  547.    see-also responses to the client, expecting the client to redirect
  548.    the query to the server identified in the response.  If the client is
  549.    located behind a firewall or is poorly connected, having a server
  550.    make the query may improve query performance or allow a query to be
  551.    satisfied.  The -forward directive will instruct the server to
  552.    operate as a forwarding server.  Whether or not this directive should
  553.    be allowed should be a configuration parameter of the server.
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Williamson & Kosters                                           [Page 10]
  563.  
  564. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  565.  
  566.  
  567.    Format for use:
  568.  
  569.    -forward<SP><mode>
  570.  
  571.    <mode>{on|off}
  572.    On:  Turns forwarding on.
  573.    Off: Turns forwarding off.
  574.  
  575.    Example of use:
  576.  
  577.    -forward on
  578.  
  579. 2.3.10 soa
  580.  
  581.    The identification of authority area is an important part of the
  582.    RWhois design.  The -soa directive is used to question the server's
  583.    authority for a specific area.  A positive response will include the
  584.    administrative parameters for the authority area as detailed in
  585.    section 3.4.3.  If the server does not contain an SOA for the
  586.    authority area requested, it must send an error message to the
  587.    client.
  588.  
  589.    Format for use:
  590.  
  591.    -soa<SP>[authority area]
  592.  
  593.    [Authority area]{%s}   This optional argument identifies the
  594.                           authority area being requested.  If this
  595.                           argument is not sent, information about
  596.                           all authority areas contained in the
  597.                           server must be sent.
  598.  
  599.    Example of use:
  600.  
  601.    -soa netsol.com
  602.  
  603. 2.3.11 notify
  604.  
  605.    The -notify directive is used to notify a server of a bad or
  606.    recursive referral or a change in a primary server's data.
  607.  
  608.    Format for use:
  609.  
  610.    -notify<SP><action><SP><information>
  611.  
  612.    <action>{badref|recurref|update|inssec|delsec}
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Williamson & Kosters                                           [Page 11]
  619.  
  620. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  621.  
  622.  
  623.    badref    When a client receives a %referral response that does
  624.              not work, it must report the bad referral to the server
  625.              that issued the referral.  The referral is bad only if
  626.              the referred server does not contain the SOA record for
  627.              the authority area in question. It is not considered a
  628.              bad referral if the server does not have an answer to
  629.              the query, but responds positively to the -soa area
  630.              directive.  This merely means that there is not an
  631.              answer to the query.  When a -badref is sent to the
  632.              referring server; it should log the bad referral so the
  633.              administrator of that server can remove the reference
  634.              if it is no longer correct.  This action should only be
  635.              taken after receiving a negative response to the query
  636.              and the SOA request.
  637.  
  638.    recurref  When a client receives a referral that results in a
  639.              recursive action, the referring server must be
  640.              informed.  The -recurref directive must be sent
  641.              identifying the recursive loop.  This directive should
  642.              only be sent to the server one level back, even if
  643.              multiple server were involved in the referral.
  644.  
  645.    update    An RWhois primary server must be aware of its
  646.              secondary servers.  If the data in the primary server
  647.              changes, the primary server may choose to notify the
  648.              secondary servers.  This allows the secondary servers
  649.              to quickly reflect changes in the primary server's data.
  650.  
  651.    inssec    This action will inform the authority server that the
  652.              server indicated in the argument will be a secondary
  653.              for its authority area.  The server receiving this
  654.              directive must determine if the secondary is
  655.              acceptable.  If it is, the server should be added to
  656.              the update list so that it will be informed if data in
  657.              the authority area changes.
  658.  
  659.    delsec    This action will inform the server that the server
  660.              indicated in the subsequent arguments will no longer be
  661.              a secondary.  The server receiving this action must
  662.              determine if the server is a secondary and if so,
  663.              remove it from the update list.
  664.  
  665.    <information>{action=badref|recurref <<server>:<query>>
  666.                 action=inssec|delsec|update
  667.                 <<server>:<object>:<authority>>}
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Williamson & Kosters                                           [Page 12]
  675.  
  676. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  677.  
  678.  
  679.    <server>{%Mserver}  This required argument identifies the server
  680.                        that contained the recursive or bad referral,
  681.                        or has data that changed.
  682.  
  683.    <query>{%s}         This required argument identifies the query
  684.                        that was sent to the server that gave a
  685.                        recursive or bad referral.
  686.  
  687.    <object>{%s}        This required argument identifies the object
  688.                        that changed.
  689.  
  690.    <authority>{%s}     This required argument identifies the
  691.                        authority area where the object that changed
  692.                        currently resides.
  693.  
  694.    Example of use:
  695.  
  696.    -notify recurref netman1.netsol.com:4343:scottw@netsol.com
  697.    -notify badref nic.ddn.mil:43:abc.af.mil
  698.    -notify update netman1.netsol.com:4343:domain:netsol.com
  699.    -notify inssec dmeister.internic.net:4343:domain:netsol.com
  700.    -notify delsec dmeister.internic.net:4343:domain:netsol.com
  701.  
  702. 2.3.12 register
  703.  
  704.    This directive allows the client to add, modify, or delete
  705.    information that exists or should exist in the server's database.
  706.    During the exchange, all attributes of an object must be sent.  The
  707.    client must wait to send the registration data until the %ok response
  708.    is received from the server.
  709.  
  710.    Format for use:
  711.  
  712.    -register<SP><mode><SP>(on:<action><SP><e-mail contact>
  713.           <SP><authority info>)
  714.  
  715.    <mode>{on|off}
  716.    on:                 This required argument starts the
  717.                        registration process.
  718.  
  719.    off:                This required argument ends the registration
  720.                        process.
  721.  
  722.    The following arguments are only required if the mode argument is
  723.    sent with the value on:
  724.  
  725.    (<action>){add|mod|del}
  726.  
  727.  
  728.  
  729.  
  730. Williamson & Kosters                                           [Page 13]
  731.  
  732. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  733.  
  734.  
  735.    add:                This conditionally required argument
  736.                        indicates that the object being sent should
  737.                        be added to the server's database.
  738.  
  739.    mod:                This conditionally required argument
  740.                        indicates that the object being sent should
  741.                        be modified and should already exist in the
  742.                        server's database.
  743.  
  744.    del:                This conditionally required argument
  745.                        indicates that the object being sent should
  746.                        be deleted from the server's database.
  747.  
  748.    (<e-mail contact>){%Memail}   This conditionally required
  749.                                  argument identifies the sender of
  750.                                  the registration information.
  751.  
  752.    (<authority info>){%s}        This required argument contains
  753.                                  information used to authenticate
  754.                                  the person sending the registration
  755.                                  information.  The method used must
  756.                                  be identified using the -private
  757.                                  directive.  Work must be done to
  758.                                  identify usable authentication
  759.                                  methods for unsupervised
  760.                                  delegation.  This is beyond the
  761.                                  scope of this document.  However,
  762.                                  the authors have made an effort to
  763.                                  allow flexibility in the
  764.                                  implementation of an authentication
  765.                                  system.
  766.  
  767.    Example of use:
  768.  
  769.    -register on add scottw@netsol.com
  770.    Object-type:referral
  771.    Referral:netman1.netsol.com:4343
  772.    Domain-Name:netsol.com
  773.    IP-Network:192.153.247.0
  774.    IP-Network:198.41.0.0
  775.    -register off
  776.  
  777. 2.3.13 object
  778.  
  779.    RWhois data is a collection of objects with defined attributes.  The
  780.    attributes for an object can be acquired by issuing the -schema
  781.    directive.  Each object must at a minimum define the attribute
  782.    object-type.  This attribute identifies the name of the object that
  783.  
  784.  
  785.  
  786. Williamson & Kosters                                           [Page 14]
  787.  
  788. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  789.  
  790.  
  791.    will be displayed in response to the -object directive.  This
  792.    directive can be used by a client to verify that a server contains
  793.    the desired object.  Another possible use may be to gather all of the
  794.    objects contained on a server and display them to the user in the
  795.    form of a menu for selection.
  796.  
  797.    Format for use:
  798.  
  799.    -object<SP>[object]
  800.  
  801.    [object]{%s}   This optional argument identifies the object
  802.                   requested.  If no argument is sent, all objects
  803.                   contained in the server will be returned.
  804.  
  805.    Example of use:
  806.  
  807.    -object domain
  808.  
  809. 2.3.14 define
  810.  
  811.    Format strings describing the format of an object's attribute may
  812.    include format macros.  More information about definitions of format
  813.    macros can be found in Section 6.  The -define directive allows the
  814.    client to request the definition of a format macro.
  815.  
  816.    Format for use:
  817.  
  818.    -define<SP>[macro name]
  819.  
  820.    [macro name]{%s}    This optional argument identifies the name of
  821.                        the macro to display.  If no arguments are
  822.                        sent, the server must return the definition
  823.                        of all macros contained in the server.
  824.  
  825.    Example of use:
  826.  
  827.    -define server
  828.  
  829. 2.3.15 private
  830.  
  831.    The -private directive allows the client to identify the
  832.    authentication method to be used.  More research needs to be done
  833.    with respect to client authentication.  This directive will allow
  834.    more experimentation.
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Williamson & Kosters                                           [Page 15]
  843.  
  844. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  845.  
  846.  
  847.    Format for use:
  848.  
  849.    -private<SP><action><SP><method><SP>[data]
  850.  
  851.    <action>{auth|encr} This required argument identifies the action
  852.                        the directive is taking.  Currently the value
  853.                        for this argument can be auth for
  854.                        authentication or encr for encryption.
  855.  
  856.    <method>{%s}        This required argument contains the name of
  857.                        the method to be used.  The value must be
  858.                        recognized by the server or an error will be
  859.                        sent.  It is beyond the scope of this
  860.                        document to identify the possible method to
  861.                        be used.
  862.  
  863.    [data]{%s}          This optional argument must be supplied if
  864.                        required by the method identified in the
  865.                        previous argument.
  866.  
  867.    Example of use:
  868.  
  869.    -private auth pass1 xxjdk998uu
  870.  
  871.    The above example is a simple password exchange.  It is beyond the
  872.    scope of this document to determine the authentication technique that
  873.    would best suit this protocol.  Development is underway to determine
  874.    the authentication needs and to experiment with potential solutions.
  875.  
  876. 2.3.16 X-
  877.  
  878.    This directive is the preface to extended directives, mutually agreed
  879.    to between the client and server.  The client and server must have
  880.    knowledge of the extended directives to use.  Extension can
  881.    accommodate other uses such as NetHelp, white pages, and many others.
  882.    If the extensions are public, they should be documented in an RFC and
  883.    available through the -directive directive.
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Williamson & Kosters                                           [Page 16]
  899.  
  900. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  901.  
  902.  
  903.    Format for use:
  904.  
  905.    -X-<directive name><SP>[directive arguments]
  906.  
  907.    <directive name>{%s}     This required argument identifies the
  908.                             name of the directive being issued.
  909.  
  910.    [directive arguments]{?} This optional argument is dependent upon
  911.                             the required or optional arguments of
  912.                             the extended directive.  There may be
  913.                             multiple directive arguments.
  914.  
  915.    Example of use:
  916.  
  917.    -X-date
  918.  
  919. 2.3.17 directive
  920.  
  921.    Directives allowed by a server may vary.  The client can issue the
  922.    -directive directive to determine if the server allows a specific
  923.    directive or to obtain a list of all acceptable directives for that
  924.    server.
  925.  
  926.    Format for use:
  927.  
  928.    -directive<SP>[directive]
  929.  
  930.    [directive][%s]   This optional argument identifies the directive
  931.                      being requested.  If no arguments are sent, all
  932.                      of the directives accepted by the server must
  933.                      be sent.
  934.  
  935.    Example of use:
  936.  
  937.    -directive X-date
  938.  
  939. 2.3.18 display
  940.  
  941.    The -display directive is used to set the display mode of the server
  942.    or to identify display modes the client is capable of.  If this
  943.    directive is sent without arguments, the server will return all
  944.    available display methods.
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Williamson & Kosters                                           [Page 17]
  955.  
  956. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  957.  
  958.  
  959.    Format for use:
  960.  
  961.    -display<SP>[action]<SP>[method]
  962.  
  963.    [action]{activate|capable}
  964.                        The `activate' setting enables a certain
  965.                        display mode, while a `capable' setting sends
  966.                        the display mode the client is capable of.
  967.  
  968.    [method]{%s}        This optional argument indicates the display
  969.                        method desired by the client.
  970.  
  971.    Example of use:
  972.  
  973.    -display swip
  974.    -display mime
  975.  
  976. 2.3.19 language
  977.  
  978.    The -language directive is used to set the language mode of the
  979.    server or to identify language modes the client is capable of.  If
  980.    this directive is sent without arguments, the server will return all
  981.    available languages.
  982.  
  983.    Format for use:
  984.  
  985.    -language<SP>[language]
  986.  
  987.    [language]{%s}      This optional argument indicates the language
  988.                        desired by the client.
  989.  
  990.    Example of use:
  991.  
  992.    -language german
  993.  
  994. 2.4  RWhois Client Model
  995.  
  996.    Server <-------> Client
  997.  
  998.    START:
  999.    <------ Connection (record time to connect)
  1000.            If no server type...Wait up to specified
  1001.             time for------> "%RWhois" response
  1002.             (recommend wait of at least 5 seconds)
  1003.  
  1004.    if  "%RWhois" is not received from server, assume that it is
  1005.     not an RWhois server
  1006.        goto QUERY:
  1007.  
  1008.  
  1009.  
  1010. Williamson & Kosters                                           [Page 18]
  1011.  
  1012. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1013.  
  1014.  
  1015.    else if "%RWhois" is received from server
  1016.        <------- send "-RWhois -VX.X"
  1017.        --------> receive "%ok"
  1018.        DIRECTIVE: if directive for server
  1019.                   <------- send directive
  1020.                   -------> receive server response
  1021.                   if "%ok" received
  1022.                     goto DIRECTIVE:
  1023.                   if "%error" received
  1024.                     process error then goto DIRECTIVE:
  1025.                 else if no more commands for server
  1026.                    goto QUERY:
  1027.    QUERY:
  1028.        <-------- send query
  1029.        --------> Receive and display response
  1030.        PROCESS: if "%referral" received
  1031.                    if first referral
  1032.                       restart server list
  1033.                    else
  1034.                       add to server list
  1035.                if "%see-also" received
  1036.                    insert server into server list
  1037.                if in holdconnection mode
  1038.                    goto DIRECTIVE:
  1039.                if no directive (%)
  1040.                    goto END:
  1041.                goto PROCESS:
  1042.    END:
  1043.    server will disconnect
  1044.    if more servers on Queue and multi or referral mode active
  1045.        goto START:
  1046.  
  1047.    Every time the RWhois client receives a %referral or %see-also
  1048.    response from the RWhois server it must compare the host:port:query
  1049.    with those already executed.  If the client discovers that it is
  1050.    being directed to repeat the same query to a server that it has
  1051.    already visited, it must not repeat that query.  As an example, the
  1052.    prototype RWhois client maintains a server trail and compares each
  1053.    new directive with the entire list.  If a recursive act is about to
  1054.    occur, the client will notify the user and exit.  The original Whois
  1055.    client opens a TCP connection, sends the query, and displays the
  1056.    response.  The RWhois client must be more robust in order to handle
  1057.    multiple server queries, servers that do not exist, and recursive
  1058.    referrals.  The client must also remain connected while sending
  1059.    directives and receiving responses.  All of these features have been
  1060.    incorporated into the experimental RWhois client.
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Williamson & Kosters                                           [Page 19]
  1067.  
  1068. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1069.  
  1070.  
  1071. 3.  RWhois Server Model
  1072.  
  1073.    This section describes the functionality of the RWhois server.
  1074.  
  1075. 3.1  Output Display and Restriction Keywords
  1076.  
  1077.    The RWhois server will behave similarly to the original whois server
  1078.    in terms of display formats and restrictions.  The following are
  1079.    required in the RWhois server.
  1080.  
  1081.    Display Format Keywords
  1082.  
  1083.    EXPand (*)          Expand
  1084.  
  1085.    ~                   no sub displays
  1086.  
  1087.    SUBdisplay (%)      sub displays
  1088.  
  1089.    SUMmary ($)         Give a short summary for the query on one to
  1090.                        many hits (defaults on multiple hits).
  1091.  
  1092.    Full (=)            Give the full record output on one to many
  1093.                        hits (defaults on one hit only).
  1094.  
  1095.    The following was added to whois post RFC 954 [RFC-954] and is part
  1096.    of the RWhois requirements:
  1097.  
  1098.    dump (#)            Display the record in a parsable format.
  1099.  
  1100.    In addition to the above, the RWhois server must accept additional
  1101.    pre-query directives such as Boolean queries and attribute=value
  1102.    query combinations.  The capability to perform partial matches are
  1103.    requested by post fixing a `*' or `.' at the end of the search item
  1104.    for unknown characters.  This capability is required for an RWhois
  1105.    server.
  1106.  
  1107.       Example: last-name=williamson and first-name=scott
  1108.  
  1109.       Data Restriction Format Keywords
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Williamson & Kosters                                           [Page 20]
  1123.  
  1124. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1125.  
  1126.  
  1127.       The following restriction keywords are found in the RFC 954
  1128.       [RFC-954] whois server:
  1129.  
  1130.    !(handle) Query on Handle only
  1131.    mailbox   Query on all records for person
  1132.    person    Query on User records only
  1133.    host      Query on Host records only
  1134.    domain    Query on Domain records only
  1135.    network   Query on Network Records only
  1136.    asn       Query on Autonomous System Numbers only
  1137.  
  1138.    The RWhois server must allow restriction of search to any object
  1139.    contained on that server.  With the exception of the `!' restriction
  1140.    format keyword, the above listed restriction keywords represent
  1141.    defined objects.  In the prototype software, each of these objects
  1142.    are defined in configuration files, not hard-coded into the server.
  1143.    New objects, and therefore restriction keywords, should be easily
  1144.    designed with no code change necessary to the server.
  1145.  
  1146. 3.2  Responses:  Server to Client Interaction
  1147.  
  1148.    Responses are sets of data that servers send in response to a client
  1149.    directive.  Responses from an RWhois server must be prefaced with the
  1150.    `%' character at the start of a line.  Responses are divided into two
  1151.    groups:  those that are required to provide minimal RWhois
  1152.    interaction and those that are used to achieve the desired
  1153.    characteristics of a fully functional distributed system.  A server
  1154.    must respond with an error message indicating that a directive is not
  1155.    available on the server and therefore does not have the required
  1156.    responses.
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Williamson & Kosters                                           [Page 21]
  1179.  
  1180. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1181.  
  1182.  
  1183. 3.3  Required Responses
  1184.  
  1185.    The following sections describe the required RWhois server responses.
  1186.  
  1187. 3.3.1 RWhois
  1188.  
  1189.    The %RWhois response is used to identify a server as an RWhois
  1190.    server.  Clients that treat RWhois servers differently will need this
  1191.    response to enable the RWhois capabilities.
  1192.  
  1193.    Format for use:
  1194.  
  1195.    RWhois<SP>V-<Spec version #><SP><server name><SP>[imp name and
  1196.    version #]
  1197.  
  1198.    <Spec version #>[V-%2.2f]     This required response indicates
  1199.                                  the version number of the RWhois
  1200.                                  protocol specification that the
  1201.                                  software is capable of handling.
  1202.                                  The version described in this
  1203.                                  document is V-1.0.
  1204.  
  1205.    <server name>[%s]             This required response is the host
  1206.                                  name of the computer hosting the
  1207.                                  RWhois server.
  1208.  
  1209.    [imp name and version #][%s]  This optional argument contains
  1210.                                  information about the server
  1211.                                  implementation.  It is recommended
  1212.                                  that the version number of the
  1213.                                  software be indicated.  This
  1214.                                  version may differ from the
  1215.                                  specification version number.
  1216.  
  1217.    Example of use:
  1218.  
  1219.    %RWhois V-1.0 rs.internic.net (Network Solutions V-1.6)
  1220.  
  1221. 3.3.2 referral
  1222.  
  1223.    The %referral response instructs the client to query another server
  1224.    (which could be a whois, RWhois, or whois++ server).  Referrals are
  1225.    cumulative.  The first referral received during a session must
  1226.    replace the default server list.  Any subsequent referrals received
  1227.    must be appended to the end of the server list.
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Williamson & Kosters                                           [Page 22]
  1235.  
  1236. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1237.  
  1238.  
  1239.    In the non-Uniform Resource Location (URL) response format below, the
  1240.    authority area equals the reduced query.  There are three types of
  1241.    referral.  The type can be determined by the client evaluating the
  1242.    authority area which is part of the %referral response.
  1243.  
  1244.    If the authority area received from a referral response is equal to
  1245.    the original query, then it is a link type referral.  If the
  1246.    authority area is not equal to the query, then it is a reduction type
  1247.    referral.  If no authority area is sent, then it is a punt type
  1248.    referral. (Punt means the server is not a root and cannot answer the
  1249.    query and therefore is referring the client to a level up the tree or
  1250.    to a server that can better answer the query.) [NOTE:  the punt type
  1251.    referral may be used to direct a client into the whois++ mesh type.]
  1252.  
  1253.    The client may receive multiple referrals from a single query.  If
  1254.    the SOA for each of these referrals is the same, then the first
  1255.    referral is the primary server and all subsequent servers are
  1256.    secondary.  Each of the servers will report the SOA for the authority
  1257.    area in question.
  1258.  
  1259.    Format for use:
  1260.  
  1261.    %referral<SP><server>[:type]<SP>[authority area]
  1262.    %referral<SP>url:<url>
  1263.  
  1264.    <server>{%Mserver}    This required argument identifies the
  1265.                          server that the client should re-connect
  1266.                          with.
  1267.  
  1268.    [type]{%Mstype}       This optional argument identifies the
  1269.                          server type.  This could save wait time for
  1270.                          the client trying to identify a server
  1271.                          which is non-RWhois.
  1272.  
  1273.    <authority area>{%s}  This optional argument identifies the
  1274.                          authority area that caused the referral for
  1275.                          the query in question.  Using this value as
  1276.                          the argument for the -soa directive to
  1277.                          the referral server should result in a
  1278.                          positive response.  If this is not the
  1279.                          case, the referral is considered bad.
  1280.  
  1281.    <url>{%Murl}          This required argument defines the Uniform
  1282.                          Resource Location (URL) string that points
  1283.                          to the resource containing the information
  1284.                          desired.
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Williamson & Kosters                                           [Page 23]
  1291.  
  1292. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1293.  
  1294.  
  1295.    Example of use:
  1296.  
  1297.    %referral nic.ddn.mil:43 .mil
  1298.    %referral url:http://www.netsol.com/
  1299.  
  1300. 3.3.3 ok
  1301.  
  1302.    The %ok response must be sent by the RWhois server at the completion
  1303.    of every task or to positively acknowledge a directive.
  1304.  
  1305.    Format for use:
  1306.  
  1307.    %ok
  1308.  
  1309. 3.3.4 error
  1310.  
  1311.    The %error response is used to indicate an error condition to the
  1312.    client.  Refer to Section 5 for details on the error reporting
  1313.    scheme.  It is important to note that only the error number will be
  1314.    used to determine the client's action.  The text message will only be
  1315.    used to make the error readable by humans connected using telnet or
  1316.    an old whois client.  The only exception to this rule is the error
  1317.    message used to indicate problems with registration transactions.
  1318.    The format for these message can be found in Section 5.
  1319.  
  1320.    Format for use:
  1321.  
  1322.    %error<SP><error number><SP>[error text]
  1323.  
  1324.    <error number>{%d}  This required argument is the error number
  1325.                        identified in Section 5.  The client can use
  1326.                        this number to categorize errors.
  1327.  
  1328.    [error text]{%s}    This optional argument is the text that
  1329.                        describes the error message.  This message
  1330.                        must be consistent for each error.  Variables
  1331.                        should not be added to this message.  This
  1332.                        message is only to make the error message
  1333.                        human readable.  Message sent following an
  1334.                        error code associated with the registration
  1335.                        process will contain the line number of the
  1336.                        attribute that is incorrect.
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Williamson & Kosters                                           [Page 24]
  1347.  
  1348. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1349.  
  1350.  
  1351.    Example of use:
  1352.  
  1353.    %error<SP>400<SP>Invalid Server Directive
  1354.  
  1355. 3.4  Optional Responses
  1356.  
  1357.    The following are optional RWhois server responses.
  1358.  
  1359. 3.4.1 see-also
  1360.  
  1361.    The %see-also response instructs the client to contact another server
  1362.    for additional information about the current query.  See-also servers
  1363.    should be inserted into the server list just after the current
  1364.    server.  If multiple see-alsos are received from a single query, each
  1365.    subsequent see-also should be inserted after any other see-alsos
  1366.    previously received.  See-alsos should be additional information
  1367.    related to the current query.
  1368.  
  1369.    One example use for the see-also response is to display autonomous
  1370.    system information relating to an IP network number or router
  1371.    interface information relating to an IP host number.
  1372.  
  1373.    Format for use:
  1374.  
  1375.    %see-also<SP><server>[:type]:<query>
  1376.    %see-also<SP>url:<url>
  1377.  
  1378.    <server>{%Mserver}  This required argument identifies the server
  1379.                        the client should reconnect with.
  1380.  
  1381.    [type]{%Mstype]     This optional argument identifies the server
  1382.                        type.  This could save wait time for the
  1383.                        client trying to identify a server which is
  1384.                        non-RWhois.
  1385.  
  1386.    <query>{%s}         This required argument sets the query that
  1387.                        must be sent to the referred server.  The
  1388.                        query may be different from the original
  1389.                        query sent to the referring server.
  1390.  
  1391.    <url>{%Murl}        This required argument defines the Uniform
  1392.                        Resource Location (URL) string that points to
  1393.                        the resource containing the information
  1394.                        desired.
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Williamson & Kosters                                           [Page 25]
  1403.  
  1404. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1405.  
  1406.  
  1407.    Example of use:
  1408.  
  1409.    %see-also prmd.merit.edu:43:handle=xxx
  1410.    %see-also url:http://www.netsol.com/
  1411.  
  1412. 3.4.2 load
  1413.  
  1414.    The %load response returns the current and average load of the
  1415.    computer hosting the RWhois server.  We realize that the measurement
  1416.    may be different depending on the implication of the system's load
  1417.    mechanism.  This directive/response was implemented to allow
  1418.    experiments with sorting preferred servers to deliver better results
  1419.    to the user.
  1420.  
  1421.    Format for use:
  1422.  
  1423.    %load <SP><current><SP><average>
  1424.  
  1425.    <current>{%2.2f}  This required argument delivers the current
  1426.                      load on the system hosting the RWhois server.
  1427.  
  1428.    <average>{%2.2f}  This required argument delivers the average
  1429.                      load on the system hosting the RWhois server.
  1430.  
  1431.    Example of use:
  1432.  
  1433.    %load 5.68 1.32
  1434.  
  1435. 3.4.3 soa
  1436.  
  1437.    The %soa response delivers information about the authority area in
  1438.    question.  If the server does not contain the authority for the area
  1439.    in question, it must respond with the appropriate error message.  The
  1440.    SOA data must never be cached.  SOA records must originate on the
  1441.    server giving the answer.  The increment and refresh attributes are
  1442.    used to provide for incremental updates of the secondary server.
  1443.    Deleted data will remain in the secondary server's cache until the
  1444.    refresh time has been reached.  This will reduce the amount of data
  1445.    transferred and not require the primary server to retain deleted
  1446.    data.  The following are the minimum attributes required for the soa
  1447.    object:
  1448.  
  1449.       object-type
  1450.       authority
  1451.       ttl
  1452.       serial
  1453.       refresh
  1454.       increment
  1455.  
  1456.  
  1457.  
  1458. Williamson & Kosters                                           [Page 26]
  1459.  
  1460. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1461.  
  1462.  
  1463.       retry
  1464.       tech-contact
  1465.       admin-contact
  1466.       hostmaster
  1467.       primary
  1468.  
  1469.    Format for use:
  1470.  
  1471.    %soa<SP>authority:<SP><authority area>
  1472.    %soa<SP>ttl:<SP><ttl>
  1473.    %soa<SP>serial:<SP><serial>
  1474.    %soa<SP>refresh:<SP><refresh>
  1475.    %soa<SP>increment:<SP><incremental>
  1476.    %soa<SP>retry:<SP><retry>
  1477.    %soa<SP>tech-contact:<SP><tech-contact>
  1478.    %soa<SP>admin-contact:<SP><admin-contact>
  1479.    %soa<SP>hostmaster:<SP><hostmaster>
  1480.    %soa<SP>primary:<SP><primary>
  1481.  
  1482.    <authority area>{%s}  The authority name of the SOA. (Example:
  1483.                          internic.net or 198.41.0.0/24)
  1484.  
  1485.    <ttl>{%d}           The time to live for data within this
  1486.                        authority area that another server may cache.
  1487.                        The server caching the data should consider
  1488.                        the data expired after storage for the number
  1489.                        of seconds identified by this attribute.
  1490.  
  1491.    <serial>{%Mserial}  Serial number of the data contained in the
  1492.                        authority area.  The serial number must be
  1493.                        incremented every time data in the authority
  1494.                        area has changed.  It must be numeric.
  1495.  
  1496.    <refresh>{%d}       The time to completely remove cached data and
  1497.                        transfer all data from the primary server.
  1498.  
  1499.    <increment>{%d}     The time to wait before checking for
  1500.                        incremental updates from a primary server.
  1501.  
  1502.    <retry>{%d}         The time to wait before retrying connection
  1503.                        to a server that appears to be out-of-service.
  1504.  
  1505.    <tech-contact>{%Memail}  E-mail address of the person or role
  1506.                             account responsible for the operation of
  1507.                             the server.
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Williamson & Kosters                                           [Page 27]
  1515.  
  1516. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1517.  
  1518.  
  1519.    <admin-contact>{%Memail} E-mail address of the person or role
  1520.                             account responsible for the data
  1521.                             contained on the server.
  1522.  
  1523.    <hostmaster>{%Memail}    E-mail address to which changes of the
  1524.                             server's data should be sent.  A data
  1525.                             edit tool can automatically send changes
  1526.                             to update the data on the server via e-mail.
  1527.  
  1528.    <primary>{%Mperm}        Primary server for authority area.
  1529.  
  1530.    Example of use:
  1531.  
  1532.    %soa authority: netsol.com
  1533.    %soa ttl: 7200
  1534.    %soa serial: 19940606203030
  1535.    %soa refresh: 7200
  1536.    %soa increment: 60
  1537.    %soa retry: 1200
  1538.    %soa tech-contact: markk@netsol.com
  1539.    %soa admin-contact: stanb@netsol.com
  1540.    %soa hostmaster: hostmaster@netsol.com
  1541.    %soa primary: netman1.netsol.com:4343
  1542.    %ok
  1543.  
  1544. 3.4.4 status
  1545.  
  1546.    The %status response returns the status of several important flags or
  1547.    values.  The response must contain the following elements.
  1548.  
  1549.    Limit:         Current limit set on the server.  This value may
  1550.                   be changed using the -limit directive.  This is
  1551.                   not the maximum limit of the server.  This value
  1552.                   is not disclosed to prevent clients from
  1553.                   automatically setting the highest limit possible,
  1554.                   causing degradation in performance of the server.
  1555.  
  1556.    Load:          This is the current load of the host system.
  1557.  
  1558.    Cache:         Current status of the cache flag. (on or off)
  1559.  
  1560.    Holdconnect:   Current status of the holdconnect flag. (on or
  1561.                   off)
  1562.  
  1563.    Forward:       Current status of the forward flag. (on or off)
  1564.  
  1565.    Authority records:  Number of authority records in server's
  1566.                        database.
  1567.  
  1568.  
  1569.  
  1570. Williamson & Kosters                                           [Page 28]
  1571.  
  1572. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1573.  
  1574.  
  1575.    Cached records:     Number of records in the server's cache
  1576.                        database.
  1577.  
  1578.    Display:            Indicates the types of display modes the
  1579.                        server is using.
  1580.  
  1581.    Format for use:
  1582.  
  1583.    %status<SP>limit:<SP><current limit>
  1584.    %status<SP>load:<SP><current load>
  1585.    %status<SP>cache:<SP><cache>
  1586.    %status<SP>holdconnect:<SP><holdconnect>
  1587.    %status<SP>forward:<SP><forward>
  1588.    %status<SP>Authority:<SP><SOA number>
  1589.    %status<SP>Cached:<SP><cached number>
  1590.    %status<SP>Display<SP><mode>:<SP><type>
  1591.  
  1592.    See above for the description of these values.
  1593.  
  1594.    <current limit>{%d}
  1595.    <current load>{%2.2f}
  1596.    <cache>{on|off}
  1597.    <holdconnect>{on|off}
  1598.    <forward>{on|off}
  1599.    <SOA number>{%d}
  1600.    <cached number>{%d}
  1601.    <mode>{single|multi}
  1602.    <type>{%s}
  1603.  
  1604.    Example of use:
  1605.    %status limit: 1500
  1606.    %status load: 1.23
  1607.    %status cache: off
  1608.    %status holdconnect: on
  1609.    %status forward: off
  1610.    %status Authority:25
  1611.    %status Cached:200
  1612.    %status display multi: summary
  1613.  
  1614. 3.4.5 xfer
  1615.  
  1616.    The %xfer response will send all instances of an object.  This is in
  1617.    response to the -xfer directive.  The transfer may be limited by the
  1618.    arguments to the directive.  If there are no arguments, the server
  1619.    must send all of the objects in the database.  Cached data must not
  1620.    be transferred using this method unless caching is turned on.
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Williamson & Kosters                                           [Page 29]
  1627.  
  1628. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1629.  
  1630.  
  1631.    Each object instance is sent with a blank %xfer response between
  1632.    instances.
  1633.  
  1634.    Format for use:
  1635.  
  1636.    %xfer<SP>[<object>:<attribute>:<value>]
  1637.  
  1638.    These arguments are not required if the current response is an object
  1639.    instance separator.
  1640.  
  1641.    <object>{%s}     This required argument represents the name of
  1642.                     the object being transferred.
  1643.  
  1644.    <attribute>{%s}  This required argument identifies the attribute
  1645.                     being sent.
  1646.  
  1647.    <value>{%s}      This required argument contains the value of the
  1648.                     attribute.  If blank, the attribute value is
  1649.                     blank.
  1650.  
  1651.    Example of use:
  1652.  
  1653.    %xfer user:last-name:Kosters
  1654.    %xfer user:first-name:Mark
  1655.    %xfer user:organization-phone:703-555-1212
  1656.    %xfer
  1657.    %xfer user:last-name:Williamson
  1658.    %xfer user:first-name:Scott
  1659.    %xfer user:organization-phone:703-555-1212
  1660.    %xfer
  1661.  
  1662. 3.4.6 schema
  1663.  
  1664.    The %schema response is used to describe the attributes of an object.
  1665.    This is in response to the -schema directive.
  1666.  
  1667.    Each attribute is sent with a blank %schema as a separator.
  1668.  
  1669.    Format for use:
  1670.  
  1671.    %schema<SP><object>:attribute:<attribute name>
  1672.    %schema<SP><object>:format:<format string>
  1673.    %schema<SP><object>:description:<descriptive string>
  1674.    %schema<SP><object>:indexed:<indexed>
  1675.    %schema<SP><object>:required:<required>
  1676.    %schema<SP><object>:multi-line:<multi-line>
  1677.    %schema<SP><object>:type:<type>
  1678.    %schema<SP><object>:primary:<primary>
  1679.  
  1680.  
  1681.  
  1682. Williamson & Kosters                                           [Page 30]
  1683.  
  1684. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1685.  
  1686.  
  1687.    %schema
  1688.  
  1689.    These arguments are not required if the current response is an
  1690.    attribute separator.
  1691.  
  1692.    <attribute name>{%s}     This required argument identifies the
  1693.                             name of the attribute being described.
  1694.  
  1695.    <format string>{%s}      This required argument describes the
  1696.                             allowed format for the attribute.
  1697.  
  1698.    <descriptive string>{%s} This required argument describes the
  1699.                             attribute's use.
  1700.  
  1701.    <indexed>{on|off}        This required argument identifies
  1702.                             attributes that are indexed.
  1703.  
  1704.    <required>{on|off}       This required argument identifies
  1705.                             attributes that are required.
  1706.  
  1707.    <multi-line>{on|off}     This required argument indicates whether
  1708.                             the attribute can span multiple lines.
  1709.  
  1710.    <type>{text|MIME|see-also|PostScript}
  1711.                             This required argument identifies the
  1712.                             type of the attribute.
  1713.  
  1714.    <unique-key>{on|off}     This required argument indicates whether
  1715.                             the attribute is a unique key.
  1716.  
  1717.    Example of use:
  1718.  
  1719.    %schema user:attribute:Object-Type
  1720.    %schema user:description:Name of the object
  1721.    %schema
  1722.    %schema user:attribute:Email
  1723.    %schema user:format:[%Memail]
  1724.    %schema user:description:RFC-822 compliant Email address
  1725.    %schema
  1726.    %schema user:attribute:Organization-Phone
  1727.    %schema user:format:[%3d[0-999]-%3d[0-999]-%4d[0-9999]]
  1728.    %schema user:description:Work phone number
  1729.    %schema
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Williamson & Kosters                                           [Page 31]
  1739.  
  1740. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1741.  
  1742.  
  1743. 3.4.7 define
  1744.  
  1745.    The %define response describes format macros to the client.  All
  1746.    format macros used in the schema format definition string must be
  1747.    available to the client through the -define directive.  Format macros
  1748.    may be nested.  It is the client's responsibility to request all
  1749.    format strings that are unrecognized from a server.  If the format
  1750.    strings change on a server, the serial number of the schemas that use
  1751.    the format must change.
  1752.  
  1753.    Format for use:
  1754.  
  1755.    %define<SP><macro name>:<[format string]>
  1756.  
  1757.    [NOTE:  The brackets around the format string are required to ensure
  1758.    that spaces contained in the format string are interpreted correctly
  1759.    by the client.]
  1760.  
  1761.    Example of use:
  1762.  
  1763.    %format server:[%s:%16Bd]
  1764.    %format email:[%s@%s]
  1765.  
  1766. 3.4.8 object
  1767.  
  1768.    All visible objects on an RWhois server must be identified in
  1769.    response to a -object directive.  The %object response either
  1770.    confirms the existence of an object or returns a complete list of all
  1771.    objects available to the currently connected user.
  1772.  
  1773.    A blank %object line serves as an object separator.
  1774.  
  1775.    Format for use:
  1776.  
  1777.    %object
  1778.    %object<SP><object name>:description:<object description>
  1779.    %object<SP><object name>:restrict:<restriction words>
  1780.  
  1781.    <object name>{%s}        This required argument is the name of
  1782.                             the object.
  1783.  
  1784.    <object description>{%s} This required argument is a description
  1785.                             of the object identified.
  1786.  
  1787.    <restriction words>{%s}  This required argument is a list of
  1788.                             words used to restrict a search to this
  1789.                             object.
  1790.  
  1791.  
  1792.  
  1793.  
  1794. Williamson & Kosters                                           [Page 32]
  1795.  
  1796. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1797.  
  1798.  
  1799.    Example of use:
  1800.  
  1801.    %object user:description:user records for entity POC
  1802.    %object user:restrict:user
  1803.    %object user:restrict:person
  1804.    %object user:restrict:mailbox
  1805.  
  1806. 3.4.9 directive
  1807.  
  1808.    The %directive response is used to display directives allowed on the
  1809.    connected server.  The directive name, description and syntax
  1810.    attributes must be sent for each directive.  If information about a
  1811.    single directive is requested then only information about that
  1812.    directive must be returned.
  1813.  
  1814.    A %directive response with no arguments must be sent between
  1815.    directives.
  1816.  
  1817.    Format for use:
  1818.  
  1819.    %directive<SP>directive:<directive>
  1820.    %directive<SP>description:<description>
  1821.    %directive<SP>syntax:<format>
  1822.    %directive
  1823.  
  1824.    The arguments below are required except when separating directives.
  1825.  
  1826.    <directive>{%s}     This required argument indicates the name of
  1827.                        the directive.
  1828.  
  1829.    <description>{%s}   This required argument describes the
  1830.                        directive.
  1831.  
  1832.    <format>{%s}        This required argument defines the format of
  1833.                        the directive.
  1834.  
  1835.    Example of use:
  1836.  
  1837.    %directive directive:schema
  1838.    %directive description:displays schema attributes
  1839.    %directive syntax:schema<SP>[%s]
  1840.    %directive
  1841.    %directive directive:xfer
  1842.    %directive description:transfer all object[authority area]
  1843.    %directive syntax:xfer<SP>[%s]<SP>[%s]
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Williamson & Kosters                                           [Page 33]
  1851.  
  1852. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1853.  
  1854.  
  1855. 3.4.10 info
  1856.  
  1857.    The %info response is used to give the user of the client a message.
  1858.    This response is not initiated by any directive.  The information
  1859.    between the %info on and the %info off should be presented to the
  1860.    user of the client.  An ideal use of this response is to present a
  1861.    Message of The Day (MOTD) to the user.
  1862.  
  1863.    Format for use:
  1864.  
  1865.    %info<SP><mode>
  1866.  
  1867.    <mode>{on|off}
  1868.  
  1869.      on:  Turns the passthru mode on.
  1870.      off: Turns the passthru mode off.
  1871.  
  1872.    Example of use:
  1873.  
  1874.    %info on
  1875.    As of 3/24/1994 at 9:00 EST this server will no longer be in
  1876.    service. If you have this server in your configuration file we
  1877.    recommend that you change it to rs.internic.net:4343. You will
  1878.    automatically be redirected there following this message.
  1879.    %info off
  1880.  
  1881. 3.4.11 display
  1882.  
  1883.    The %display response is used to inform the client that the data
  1884.    following this response is using the indicated method.  The method
  1885.    selected will continue to be active until a %display response is sent
  1886.    without any arguments.  The server must send an error message to
  1887.    clients that have been identified as non-RWhois clients.  This
  1888.    response allows the use of display methods such as MIME [RFC 1521] or
  1889.    other special character sets such as those used in the Japanese
  1890.    language.
  1891.  
  1892.    Format for use:
  1893.  
  1894.    %display<SP>extended:<extended>
  1895.  
  1896.    %display<SP>name:<name>
  1897.    %display<SP>length:<length>
  1898.    %display<SP>description:<description>
  1899.    %display<SP>command-line-option:<mode>
  1900.  
  1901.    <extended>     This optional argument identifies if the display
  1902.                   method is extended, i.e., RWhois specific.
  1903.  
  1904.  
  1905.  
  1906. Williamson & Kosters                                           [Page 34]
  1907.  
  1908. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1909.  
  1910.  
  1911.    Example of use:
  1912.  
  1913.    %display extended:mime
  1914.    MIME-Version:1.0
  1915.    Content-type: image/gif
  1916.    Content-Transfer-Encoding: base64
  1917.    ...data...
  1918.    %display
  1919.  
  1920. 3.4.12 X-
  1921.  
  1922.    The %X- response represents extended responses.  The client must have
  1923.    prior knowledge of this response.
  1924.  
  1925.    Format for use:
  1926.  
  1927.    %X-<response><SP>[arguments]
  1928.  
  1929.    <response>{%s} This required argument contains the response name.
  1930.  
  1931.    Example of use:
  1932.  
  1933.    %X-extstatus numusers:500
  1934.    %X-extstatus avalslots:200
  1935.  
  1936.    [NOTE:  The above examples are not implemented in the current
  1937.    RWhois prototype software.  They are only examples of the %X-
  1938.    response to a -X- directive.  X6X error codes are used when
  1939.    problems are encountered in relation to the -X- directives
  1940.    contained on the server.  Details can be found in Section 5.]
  1941.  
  1942. 3.4.13 language
  1943.  
  1944.    The %language response is used to inform the client that the data
  1945.    following this response will be sent in the indicated language.  The
  1946.    language selected will continue to be active until a %language
  1947.    response is sent without any arguments, at which time the server will
  1948.    revert back to English, the default.  The server must send an error
  1949.    message to clients that have been identified as non-RWhois clients.
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962. Williamson & Kosters                                           [Page 35]
  1963.  
  1964. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  1965.  
  1966.  
  1967.    Format for use:
  1968.  
  1969.    %language:<SP><language>
  1970.  
  1971.    Example of use:
  1972.  
  1973.    %language: german
  1974.    RWhois Deutsche Version: 1.0
  1975.    %language
  1976.  
  1977. 3.5  Query Reduction
  1978.  
  1979.    The critical component of the RWhois server is the ability to reduce
  1980.    the query to find a server that is closer to the data.  The search
  1981.    algorithm of the server is the following:
  1982.  
  1983.    1) accept a query
  1984.    2) find any local matches - display them
  1985.    3) find any referrals - display them
  1986.    4) if no local or referral hits, reduce the query and goto step 3
  1987.  
  1988.    Here is an example of the query ietf.cnri.reston.va.us:
  1989.  
  1990.     1) query whois for ietf.cnri.reston.va.us
  1991.     2) search rs.internic.net for information (no hits).
  1992.     3) search referrals for ietf.cnri.reston.va.us (no hits).
  1993.     4) search referrals for cnri.reston.va.us (no hits).
  1994.     5) search referrals for reston.va.us (no hits).
  1995.     6) search referrals for va.us (no hits).
  1996.     7) search referrals for us (referral found) - referral to
  1997.        isi.edu.
  1998.  
  1999.    [currently on rs.internic.net:4343 for proof of concept].
  2000.  
  2001. 3.6  Determining Authority
  2002.  
  2003.    Authority areas are a major part of the RWhois protocol. If an
  2004.    authoritative response is required, turning the cache off is the
  2005.    first step.  The client can also determine if the server connected
  2006.    has authority over the name/number space of interest by sending the
  2007.    -soa <authority area> directive.  If the server has authority for the
  2008.    area requested, it must return important information about the
  2009.    authority area.  The exchange below is a client determining if the
  2010.    server is an authority for abc.net or no.net.
  2011.  
  2012.    S wait for connection
  2013.    C connect to rs.internic.net port 4343
  2014.    S %RWhois V-1.0 rs.internic.net (Network Solutions, Inc. V-1.0)
  2015.  
  2016.  
  2017.  
  2018. Williamson & Kosters                                           [Page 36]
  2019.  
  2020. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2021.  
  2022.  
  2023.    C -RWhois V-1.0 (Network Solutions, Inc. V-1.0)
  2024.    S %ok
  2025.    C -cache off
  2026.    S %ok
  2027.    C -soa abc.net
  2028.    S %error<SP>333<SP>Not SOA for requested authority area
  2029.    S %ok
  2030.    C -soa no.net
  2031.    S %soa authority: no.net
  2032.    S %soa ttl: 7500
  2033.    S %soa serial: 45
  2034.    S %soa refresh: 3600
  2035.    S %soa retry: 3600
  2036.    S %soa tech-contact: markk@no.net
  2037.    S %soa admin-contact: stanb@no.net
  2038.    S %soa hostmaster: hostmaster@no.net
  2039.    S %ok
  2040.  
  2041. 3.7  Secondary Server Interaction
  2042.  
  2043.    A server that operates as a secondary will report an authoritative
  2044.    SOA for the authority area of the data it contains.  Below is the
  2045.    interaction between the primary and secondary server.  In reality the
  2046.    secondary operation would be performed using a client specifically
  2047.    designed for this purpose.
  2048.  
  2049.    S wait for connection
  2050.    C connect to slam.internic.net port 4343
  2051.    S %RWhois V-1.0 slam.internic.net (Network Solutions Inc. V-1.0)
  2052.    C -RWhois V-1.0 (Network Solutions Inc. V-1.0)
  2053.    S %ok
  2054.    C -soa internic.net
  2055.    S %soa authority: internic.net
  2056.    S %soa ttl: 7500
  2057.    S %soa serial: 45
  2058.    S %soa refresh: 3600
  2059.    S %soa retry: 3600
  2060.    S %soa tech-contact: markk@internic.net
  2061.    S %soa admin-contact: stanb@internic.net
  2062.    S %soa hostmaster: hostmaster@rs.internic.net
  2063.    S %ok
  2064.    C -xfer domain internic.net
  2065.    S ... all data for domain object in the internic.net authority
  2066.    area transferred
  2067.    S%ok
  2068.    C -notify inssec netman1.netsol.com:4343:domain:internic.net
  2069.    S %ok
  2070.    C -quit
  2071.  
  2072.  
  2073.  
  2074. Williamson & Kosters                                           [Page 37]
  2075.  
  2076. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2077.  
  2078.  
  2079.    S close connection
  2080.    C close connection
  2081.  
  2082. 3.8  Registration Process
  2083.  
  2084.    The following is the interaction that occurs when a server accepts a
  2085.    registration from a client.
  2086.  
  2087.    S wait for connection
  2088.    C connect to slam.internic.net port 4343
  2089.    S %RWhois V-1.0 slam.internic.net (Network Solutions Inc. V-1.0)
  2090.    C -RWhois V-1.0 (Network Solutions Inc. V-1.0)
  2091.    S %ok
  2092.    C -soa internic.net
  2093.    S %soa authority: internic.net
  2094.    S %soa ttl: 7500
  2095.    S %soa serial: 45
  2096.    S %soa refresh: 3600
  2097.    S %soa retry: 3600
  2098.    S %soa tech-contact: markk@internic.net
  2099.    S %soa admin-contact: stanb@internic.net
  2100.    S %soa hostmaster: hostmaster@rs.internic.net
  2101.    S %ok
  2102.    C -private auth password 98uuuts
  2103.    S %ok
  2104.    C -register on add scottw@netsol.com 98uuuts
  2105.    S %ok
  2106.    C ... send all attributes for object to register
  2107.    S %error 120 Registration not processed... will process hours:24
  2108.    C %quit
  2109.  
  2110. 3.9  Out-of-Service
  2111.  
  2112.    Servers that are being taken out of service should automatically
  2113.    refer the client back into the tree.  Of course, this is not possible
  2114.    if the system which hosts the server is out of service.  In this
  2115.    case, the client's robustness must be relied upon to return to the
  2116.    referrer and notify that server that the referral was bad.  If the
  2117.    system will still be available on the Internet, the following
  2118.    exchange is recommended:
  2119.  
  2120.    S wait for connection
  2121.    C connect to slam.internic.net port 3636
  2122.    S %RWhois V-1.0 slam.internic.net (Network Solutions Inc. V-1.0)
  2123.    C -RWhois V-1.0 (Network Solutions Inc. V-1.0)
  2124.    S %info on
  2125.    S This server will no longer be in service. You should
  2126.    S change your configuration file to reflect the new root
  2127.  
  2128.  
  2129.  
  2130. Williamson & Kosters                                           [Page 38]
  2131.  
  2132. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2133.  
  2134.  
  2135.    S server at rs.internic.net:4343. You will automatically be
  2136.    S referred to the new root.
  2137.    S %error 200 Service not available referral to follow
  2138.    S %referral rs.internic.net:4343
  2139.    S close connection
  2140.    C close connection
  2141.  
  2142. 4.  Interaction:  Client Directives and Acceptable Server Responses
  2143.  
  2144.    This section describes the responses to the various client
  2145.    directives.
  2146.  
  2147. 4.1 General
  2148.  
  2149.    The responses below are general responses that can occur as a result
  2150.    of any directive.  Therefore, they will not be repeated under each
  2151.    directive.
  2152.  
  2153.       %ok
  2154.       %error<SP>400<SP>Invalid Server Directive
  2155.       %error<SP>100<SP>Get Peer Name query failed
  2156.       %error<SP>500<SP>Memory Allocation Problem
  2157.       %error<SP>401<SP>Not authorized for directive
  2158.       %error<SP>402<SP>Unidentified error... continue
  2159.       %error<SP>502<SP>Unrecoverable error... goodbye
  2160.       %error<SP>503<SP>Idle time exceeded... goodbye
  2161.  
  2162. 4.2 On Connection
  2163.  
  2164.    These responses will only occur following successful connection to
  2165.    the server's host and start-up of the application:
  2166.  
  2167.       %RWhois
  2168.       %error<SP>501<SP>Service not available
  2169.       %referral
  2170.       %error<SP>503<SP>Idle time exceeded... goodbye
  2171.  
  2172. 4.3 <QUERY>
  2173.  
  2174.    These responses may occur following a query:
  2175.  
  2176.       <answer>
  2177.       %referral
  2178.       %see-also
  2179.       %error<SP>334<SP>Pre-query directive not implemented
  2180.       %error<SP>230<SP>No Records Found
  2181.       %error<SP>130<SP>Not authority for answer... TTL good
  2182.       %error<SP>231<SP>Not authority for answer... TTL expired
  2183.  
  2184.  
  2185.  
  2186. Williamson & Kosters                                           [Page 39]
  2187.  
  2188. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2189.  
  2190.  
  2191. 4.4 -RWhois
  2192.  
  2193.       %error<SP>300<SP>Not compatible with that version number
  2194.  
  2195. 4.5 -load
  2196.  
  2197.       %load
  2198.       %error<SP>335<SP>System's load not available
  2199.  
  2200. 4.6 -limit<SP>< value >
  2201.  
  2202.       %limit
  2203.       %error<SP>330<SP>Exceeded Max Records Limit
  2204.       %error<SP>331<SP>Invalid Max Records Size
  2205.  
  2206. 4.7 -schema<SP>[object]
  2207.  
  2208.       %schema
  2209.       %error<SP>337<SP>Object's schema not found
  2210.  
  2211. 4.8 -xfer<SP>[object]
  2212.  
  2213.       %xfer
  2214.       %error<SP>332<SP>Nothing to transfer
  2215.       %error<SP>337<SP>Object's schema not found
  2216.  
  2217. 4.9 -quit
  2218.  
  2219.       %ok
  2220.  
  2221. 4.10 -cache<SP><on/off>
  2222.  
  2223.       %error<SP>232<SP>Cache disabled
  2224.  
  2225. 4.11 -status
  2226.  
  2227.       %status
  2228.  
  2229. 4.12 -forward
  2230.  
  2231.       %error<SP>431<SP>Not authorized to forward
  2232.       %error<SP>433<SP>Bad reference on forward
  2233.  
  2234. 4.13 -soa
  2235.  
  2236.       %soa
  2237.       %error<SP>333<SP>Not SOA for requested authority area
  2238.  
  2239.  
  2240.  
  2241.  
  2242. Williamson & Kosters                                           [Page 40]
  2243.  
  2244. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2245.  
  2246.  
  2247. 4.14 -notify
  2248.  
  2249.       %error<SP>434<SP>Referral does not exist on this server
  2250.       %error<SP>530<SP>Not authorized as secondary
  2251.  
  2252. 4.15 -register
  2253.  
  2254.       %error<SP>120<SP>Registration not processed... will process
  2255.    hours:<hours>
  2256.       %error<SP>320<SP>Invalid attribute line:<line number>
  2257.       %error<SP>321<SP>Invalid format line:<line number>
  2258.       %error<SP>322<SP>Required attribute missing name:<attribute
  2259.    name>
  2260.       %error<SP>323<SP>Required related object missing name:<object
  2261.    name>
  2262.       %error<SP>324<SP>Primary key not unique
  2263.       %error<SP>420<SP>Registration not authorized
  2264.       %error<SP>421<SP>Not authorized to change object:<object
  2265.    name><SP>key:<key>
  2266.  
  2267. 4.16 -holdconnect
  2268.  
  2269. 4.17 -object
  2270.  
  2271.       %object
  2272.       %error<SP>336<SP>Object not defined
  2273.  
  2274. 4.18 -define
  2275.  
  2276.       %define
  2277.       %error<SP>435<SP>Macro not defined
  2278.  
  2279. 4.19 -X-
  2280.  
  2281.       %X-
  2282.       %error<SP>460<SP>Extended directive not recognized
  2283.       %error<SP>461<SP>Extended directive not authorized
  2284.  
  2285. 4.20 -display
  2286.  
  2287.       %display
  2288.       %display<SP>436<SP>Display mode not allowed
  2289.  
  2290. 4.21 -language
  2291.  
  2292.       %language<SP>437<SP>Language not supported
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298. Williamson & Kosters                                           [Page 41]
  2299.  
  2300. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2301.  
  2302.  
  2303. 5.  Error Codes
  2304.  
  2305.    The error code immediately follows the %error response from the
  2306.    RWhois server.  The definitions of the error codes are below.  The
  2307.    error codes are descriptive so that the client can group the error
  2308.    messages in order to determine group action that must be taken before
  2309.    taking error specific action.  Error codes should remain consistent
  2310.    without variable extensions except for messages associated with the
  2311.    registration process.  If a client receives a `6' in the second
  2312.    position of the error code and the client does not support the
  2313.    extended code received, the client must act on the first position
  2314.    code. (Example: If a client received %error 561 and the client did
  2315.    not support the extended error codes for the server currently
  2316.    connected, the client would exit based on the `5' in the first
  2317.    position of the error code.)
  2318.  
  2319.    X00
  2320.  
  2321.       1 -    information only, no action required
  2322.       2 -    information, action required
  2323.       3 -    Specific command error, retry that command or try
  2324.              another directive
  2325.       4 -    Serious for current directive, may correct with another
  2326.              directive
  2327.       5 -    Fatal, must disconnect
  2328.  
  2329.    0X0
  2330.  
  2331.       0(1) -      System wide, no specific directive
  2332.       2 -         Registration error
  2333.       3(4,5) -    Specific directive
  2334.       6 -         Extended message (version specific)
  2335.  
  2336.    00X
  2337.  
  2338.       Sequential order
  2339.  
  2340. 5.1  Error Code List
  2341.  
  2342.    Below is an ordered list of RWhois error codes.  These codes may be
  2343.    extended with implementation specific codes.  These extended codes
  2344.    will have a `6' in the second position of the code.
  2345.  
  2346.    100 Get Peer Name query failed
  2347.    120 Registration not processed... will process hours:<hours>
  2348.    130 Not authority for answer... TTL good
  2349.    200 Service not available... Referral to follow
  2350.    230 No Records Found
  2351.  
  2352.  
  2353.  
  2354. Williamson & Kosters                                           [Page 42]
  2355.  
  2356. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2357.  
  2358.  
  2359.    231 Not authority for answer... TTL expired
  2360.    232 Cache disabled
  2361.  
  2362.    300 Not compatible with that version number
  2363.    320 Invalid attribute line:<line number>
  2364.    321 Invalid format line:<line number>
  2365.    322 Required attribute missing name:<attribute name>
  2366.    323 Required related object missing name:<object name>
  2367.    324 Primary key not unique
  2368.    330 Exceeded Max Records Limit
  2369.    331 Invalid Max Records Size
  2370.    332 Nothing to transfer
  2371.    333 Not SOA for requested authority area
  2372.    334 Pre-query directive not implemented
  2373.    335 System's load not available
  2374.    336 Object not defined
  2375.    337 Object's schema not found
  2376.  
  2377.    400 Invalid Server Directive
  2378.    401 Not authorized for directive
  2379.    402 Unidentified error... continue
  2380.    420 Registration not authorized
  2381.    421 Not authorized to change object:<object name><SP>key:<key>
  2382.    431 Not authorized to forward
  2383.    432 Not authorized to transfer
  2384.    433 Bad reference on forward
  2385.    434 Referral does not exist on this server
  2386.    435 Macro not defined
  2387.    436 Display mode not allowed
  2388.    437 Language not supported
  2389.    460 Extended directive not recognized
  2390.    461 Extended directive not authorized
  2391.  
  2392.    500 Memory Allocation Problem
  2393.    501 Service not available
  2394.    502 Unrecoverable error... goodbye
  2395.    503 Idle time exceeded... goodbye
  2396.    530 Not authorized as secondary
  2397.  
  2398. 6.  Attribute Format
  2399.  
  2400.    The format for all attributes for objects in the RWhois server must
  2401.    be specified using a format specifier.  This definition will allow
  2402.    the client software to interpret the received data correctly.  The
  2403.    RWhois format specifier closely follows the `C' language scanf syntax
  2404.    with macro extensions.
  2405.  
  2406.    Format specifiers must follow this pattern:
  2407.  
  2408.  
  2409.  
  2410. Williamson & Kosters                                           [Page 43]
  2411.  
  2412. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2413.  
  2414.  
  2415.    %[alignment][length restriction]<type>[range restriction]
  2416.  
  2417.    [alignment]    '-' = left justified
  2418.                   '.' = right justified
  2419.  
  2420.    [length restriction]     <value> = number of bytes allowed
  2421.                             <value>B = number of bits allowed
  2422.  
  2423.    <type>    This is the only required part of the format specifier.
  2424.              Below are the allowed format type values.  The length
  2425.              of these values are not specified.  These restrictions
  2426.              will be on the left of the [length restriction].
  2427.  
  2428.    %c Character
  2429.    %s String
  2430.    %d Integer
  2431.    %x Hex Integer
  2432.    %o Octal Integer
  2433.    %f Float
  2434.    %e Scientific
  2435.    %M defined macro
  2436.  
  2437.    [range restriction] The range restriction will limit the allowed
  2438.                        values.  This may specify a number,
  2439.                        character, or string range.
  2440.  
  2441.    Examples: %-3s["ON","OFF"] =  Defines a string with 3 characters
  2442.                                  left aligned and limited to the
  2443.                                  strings ON or OFF.
  2444.              %16Bd[0-50]      =  16 bit integer between 0 and 50
  2445.  
  2446.              %4.2f[0-2500.50]  = Defines a floating point number
  2447.                                  limited to 4 digits before and 2
  2448.                                  after the decimal with a value
  2449.                                  between 0 and 2500.50.
  2450.  
  2451. 6.1  Format Specification Macros
  2452.  
  2453.    Format specifications may be presented as macros.  Format
  2454.    specification macros may be defined using the following format.
  2455.  
  2456.    %M<macro name>=<format string or earlier macro>
  2457.  
  2458.    The following macros are pre-defined in this RWhois specification:
  2459.  
  2460.    Month/Day/Year formats:
  2461.    %MM=[%-2d[0-12]]
  2462.    %MD=[%-2d[0-31]]
  2463.  
  2464.  
  2465.  
  2466. Williamson & Kosters                                           [Page 44]
  2467.  
  2468. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2469.  
  2470.  
  2471.    %MY2=[%-2d[0-99]]
  2472.    %MY4=[%-4d[0-9999]]
  2473.    %MMs=[%-3s\
  2474.    ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP",\
  2475.    "OCT","NOV","DEC"]]
  2476.  
  2477.    Date formats:
  2478.    %Mdate1=[%MM/%MD/%MY2]
  2479.    %Mdate2=[%MM/%MD/%MY4]
  2480.    %Mdate3=[%MD-%MMs-%MY2]
  2481.    %Mdate4=[%MD-%MMs-%MY4]
  2482.    %Mdate5=[%MY4%MM%MD]
  2483.  
  2484.    Hour/Minute/Second formats:
  2485.    %MTH=[%-2d[0-24]]
  2486.    %MTM=[%-2d[0-59]]
  2487.    %MTS=[%-2d[0-59]]
  2488.  
  2489.    Time formats:
  2490.    %Mtime1=[%MTH:%MTM:%MTS]
  2491.    %Mtime2=[%MTH%MTM%MTS]
  2492.  
  2493.    Miscellaneous formats:
  2494.    %Mserver=[%s:%16Bd]
  2495.    %Mipnumber=[%8Bd.%8Bd.%8Bd.%8Bd]
  2496.    %Memail=[%s@%s]
  2497.  
  2498.    %Mserial=[%Mdate5%Mtime2]
  2499.    %Mstype=[RWHOIS/WHOIS/WHOIS++/OTHER]
  2500.    %Murl=[%s://%s]
  2501.  
  2502.    Macro definitions may be obtained by sending the -define directive to
  2503.    the server.  For client efficiency, definitions can be remembered.
  2504.    If the definition of a macro changes, the serial number of all
  2505.    schemas using that macro must change, allowing the client to
  2506.    reacquire the schema and format specifier macros.
  2507.  
  2508. 7.  Quick Query (RWhois using UDP)
  2509.  
  2510.    The overhead incurred by establishing a TCP connection and
  2511.    interacting with an RWhois server may be unnecessary if the client
  2512.    only wishes to ask one question.  A separate document will describe
  2513.    the UDP facility for RWhois.  Adjustments to the query must be made
  2514.    to make this a practical option.  The only function allowed while
  2515.    utilizing UDP is a single query.
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522. Williamson & Kosters                                           [Page 45]
  2523.  
  2524. RFC 1714            Referral Whois Protocol (RWhois)       November 1994
  2525.  
  2526.  
  2527. 8.  References
  2528.  
  2529.    [RFC-954]      Harrenstien, K., Stahl, M., and E Feinler, "NICNAME/
  2530.                   WHOIS", RFC 954, SRI, October 1985.
  2531.  
  2532.    [RFC-1521]     Borenstein, N., and N. Freed, "MIME (Multipurpose
  2533.                   Internet Mail Extensions) Part One: Mechanisms for
  2534.                   Specifying and Describing the Format of Internet
  2535.                   Message Bodies", RFC 1521, Bellcore, Innosoft,
  2536.                   September 1993.
  2537.  
  2538. 9.  Security Considerations
  2539.  
  2540.    Security issues are not discussed in this memo.
  2541.  
  2542. 10.  Authors' Addresses
  2543.  
  2544.    Scott Williamson
  2545.    505 Huntmar Park Dr.
  2546.    Herndon, VA 22070
  2547.  
  2548.    Phone: (703) 742-4820
  2549.    EMail: scottw@internic.net
  2550.  
  2551.  
  2552.    Mark Kosters
  2553.    505 Huntmar Park Dr.
  2554.    Herndon, VA 22070
  2555.  
  2556.    Phone: (703) 742-4795
  2557.    EMail: markk@internic.net
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. Williamson & Kosters                                           [Page 46]
  2579.  
  2580.